from functools import reduce


# 注意: Python2.7 返回列表，Python3.x 返回迭代器对象
def is_not_empty(s):
    if len(s.strip()) > 0:
        return s


# print(is_not_empty('1234'))
not_empty_list = list(filter(is_not_empty, ['1', '', 'wrsw']))
print(not_empty_list)


# map函数
def square(x):
    return x**2


square_list = list(map(square, [1, 2, 3, 4, 5]))
print(square_list)

# lambda形式
square2_list = list(map(lambda x: x**2, [1, 2, 3, 4, 5]))
print(square2_list)


# reduce函数
# 注意：Python3.x reduce() 已经被移到 functools 模块里，如果我们要使用，需要引入 functools 模块来调用 reduce() 函数：
def f(x, y):
    return x + y


ans = reduce(f, [1, 2, 3, 4, 5])
print(ans)
